package the_fourth_chapter;

/**
 * 选择排序法首先将一组无序的数字排成一排，再将其最大的数与最后一个数字交换位置，最大数字称为已排序数字。
 * 然后将剩下的未排序数字中最大的数字与最后一个为排序数字交换位置，称为已排序数字
 * 
 * 选择排序：每一轮选出最大的数，然后和最后的数交换
 * 
 * @author explorati
 *
 */
public class ChooseSort {

	public static int[] Choose_Sort(int[] nums) {
		for (int i = nums.length - 1; i > 0; i--) {
			int max = 0;
			for (int j = 1; j <= i; j++) {
				if (nums[j] > nums[max]) {
					max = j;
				}
			}
			int temp = nums[i];
			nums[i] = nums[max];
			nums[max] = temp;
		}
		return nums;
	}

	public static void main(String[] args) {
		int[] nums = { 5, 4, 3, 6, 6, 1, 7, 2 };
		System.out.println("未排序的数组为：");
		for (int i = 0; i < nums.length; i++) {
			System.out.print(nums[i] + "\t");
		}

		System.out.println();

		int[] num = Choose_Sort(nums);

		System.out.println("选择排序后的数组为：");
		for (int i = 0; i < nums.length; i++) {
			System.out.print(num[i] + "\t");
		}
	}
}
